//CSP2021 Junior Competition2
//Problem 3 network
//With code as pen, draw beautiful pictures.
//By cyrxdzj
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int n;
int cnt;
string server[1005];
int id[1005];
bool check(string ip)
{
	int cnt1=0,cnt2=0;
	int len=ip.size();
	for(int i=0;i<len;i++)
	{
		if(ip[i]=='.')
		{
			cnt1++;
			if(cnt1>3)
			{
				return false;
			}
		}
		else if(ip[i]==':')
		{
			if(cnt1!=3||cnt2!=0)
			{
				return false;
			}
			cnt2++;
		}
		else if(ip[i]<'0'||ip[i]>'9')
		{
			return false;
		}
		if(i+1<len)
		{
			if((ip[i]==':'||ip[i]=='.')&&(ip[i+1]==':'||ip[i+1]=='.'))
			{
				return false;
			}
		}
		if(i==0||i+1==len)
		{
			if(ip[i]<'0'||ip[i]>'9')
			{
				return false;
			}
		}
	}
	int n[5],c[5];
	int ni=0;
	for(int i=0;i<5;i++)
	{
		n[i]=c[i]=0;
	}
	for(int i=0;i<len;i++)
	{
		if(ip[i]<'0'||ip[i]>'9')
		{
			ni++;
		}
		else
		{
			n[ni]=n[ni]*10+ip[i]-'0';
			c[ni]++;
		}
	}
	for(int i=0;i<4;i++)
	{
		if(n[i]<0||n[i]>255)
		{
			return false;
		}
	}
	if(n[4]<0||n[4]>65535)
	{
		return false;
	}
	for(int i=0;i<5;i++)
	{
		do
		{
			c[i]--;
			n[i]/=10;
		}while(n[i]);
		if(c[i]!=0)
		{
			return false;
		}
	}
	return true;
}
int main()
{
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string o,ip;
		cin>>o>>ip;
		if(!check(ip))
		{
			cout<<"ERR"<<endl;
			continue;
		}
		if(o=="Server")
		{
			bool flag=false;
			for(int j=1;j<=cnt;j++)
			{
				if(server[j]==ip)
				{
					cout<<"FAIL"<<endl;
					flag=true;
					break;
				}
			}
			if(!flag)
			{
				server[++cnt]=ip;
				id[cnt]=i;
				cout<<"OK"<<endl;
			}
		}
		else
		{
			bool flag=false;
			for(int j=1;j<=cnt;j++)
			{
				if(server[j]==ip)
				{
					cout<<id[j]<<endl;
					flag=true;
					break;
				}
			}
			if(!flag)
			{
				cout<<"FAIL"<<endl;
			}
		}
	}
	return 0;
}

